/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ssp.service;

import ssp.net.NWcomponentManager;

/**
 * フロントエンドサーバを生成するクラス
 * @author yamazaki
 */
public class FrontendServerFactory {
    
    /**
     * 指定の数のフロントエンドサーバを指定の能力で生成する
     * @param num フロントエンドサーバ数
     * @param minCapacity 最小能力
     * @param maxCapacity  最大能力
     */
    public static void createFrontendServer(int num, double minCapacity, double maxCapacity) {
        FrontendServerManager frontendServerManager = FrontendServerManager.getINSTANCE();
        int currentNum = frontendServerManager.getFrontEndServerNum();
        double delta = (maxCapacity - minCapacity) / (num - 1.0);
        
        for(int i=0 ; i<num ; i++) {
            frontendServerManager.add(new FrontendServer(i+currentNum, minCapacity + delta * i));
        }
    }
    
    /**
     * 各フロントエンドサーバをいずれかのネットワークコンポーネントに割り当てる
     */
    public static void allocateFrontendServer() {
        for(FrontendServer frontendServer : FrontendServerManager.getINSTANCE().getFrontendServerList()) {
            frontendServer.addNeighbor(NWcomponentManager.getINSTANCE().getRandomNWcomponent());
        }
    }
    
}
